{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "initial_id",
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    ""
   ]
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 1、使用FUNCTION_CALL模式",
   "id": "2a3ce764af7fd8a3"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-08T15:33:34.714609Z",
     "start_time": "2025-09-08T15:33:27.022655Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from langchain_core.prompts import ChatPromptTemplate, PromptTemplate\n",
    "# 获取Tavily搜索的实例\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain.agents import initialize_agent, AgentType, create_tool_calling_agent, AgentExecutor\n",
    "from langchain.tools import Tool\n",
    "import os\n",
    "import dotenv\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "# 读取配置文件的信息\n",
    "os.environ['TAVILY_API_KEY'] = \"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\"\n",
    "\n",
    "# 获取Tavily搜索工具的实例\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "# 获取一个搜索的工具\n",
    "# 使用Tool\n",
    "search_tool = Tool(\n",
    "    func=search.run,\n",
    "    name=\"Search\",\n",
    "    description=\"用于检索互联网上的信息\",\n",
    ")\n",
    "\n",
    "\n",
    "# 获取大语言模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "# 提供提示词模板（以ChatPromptTemplate为例）\n",
    "prompt_template = ChatPromptTemplate.from_messages([\n",
    "    (\"system\",\"你是一个乐于助人的ai助手，根据用户的提问，必要时调用Search工具，使用互联网检索数据\"),\n",
    "    (\"human\",\"{input}\"),\n",
    "    (\"system\",\"{agent_scratchpad}\"),\n",
    "    # (\"placeholder\",\"{agent_scratchpad}\")\n",
    "])\n",
    "\n",
    "# 获取Agent的实例：create_tool_calling_agent()\n",
    "agent = create_tool_calling_agent(\n",
    "    llm=llm,\n",
    "    prompt=prompt_template,\n",
    "    tools=[search_tool]\n",
    ")\n",
    "\n",
    "# 获取AgentExecutor的实例\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=[search_tool],\n",
    "    verbose=True,\n",
    ")\n",
    "\n",
    "\n",
    "# 通过AgentExecutor的实例调用invoke(),得到响应\n",
    "result = agent_executor.invoke({\"input\":\"查询今天北京的天气情况\"})\n",
    "\n",
    "# 处理响应\n",
    "print(result)\n"
   ],
   "id": "7374b2cf19719192",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m\n",
      "Invoking: `Search` with `北京天气 2023年10月5日`\n",
      "\n",
      "\n",
      "\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '北京历史天气预报2023年10月份', 'url': 'https://www.tianqihoubao.com/lishi/beijing/month/202310.html', 'content': '| 日期 | 天气状况(白天/夜间) | 最高/最低气温 | 风力风向(白天/夜间) |\\n ---  --- |\\n| 2023年10月01日 | 晴 / 晴 | 26℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月02日 | 多云 / 多云 | 25℃ / 14℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月03日 | 多云 / 多云 | 25℃ / 15℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月04日 | 晴 / 晴 | 24℃ / 9℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月05日 | 多云 / 多云 | 22℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月06日 | 多云 / 多云 | 22℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月07日 | 多云 / 小雨 | 22℃ / 11℃ | 北风 1-3级 / 北风 1-3级 | [...] 前一月 后一月 北京历史天气 北京10月份天气统计信息  \\n 搜索\"城市名+天气后报\"访问本站（北京天气后报）导出Excel\\n\\n### 天气状况统计\\n\\n2023年10月份北京北京天气状况统计图\\n白天天气\\n夜间天气\\n全天综合\\n\\n## 其他月份\\n\\n### 风力分布分析\\n\\n2023年10月份北京风力等级和风向分布情况图 \\n白天风力风向\\n夜间风力风向\\n全天综合\\n\\n### 关于天气后报\\n\\n天气后报提供全国34个省市所属的3146个地区的历史天气预报查询，数据来源于城市当天的天气预报信息，可以查询到历史天气气温，历史风向，历史风力等历史天气状况。\\n\\n### 快速链接\\n\\n### 联系我们\\n\\n关于我们 | 免责声明 | QQ : 1968509554 |\\n\\n版权所有 © 2012-2025 天气后报', 'score': 0.8315952}, {'title': '北京市十月天气和平均温度（中国） - Weather Spark', 'url': 'https://zh.weatherspark.com/m/131055/10/%E5%8C%97%E4%BA%AC%E5%B8%82%E3%80%81%E4%B8%AD%E5%9C%8B%E7%9A%8410%E6%9C%88%E5%B9%B3%E5%9D%87%E5%A4%A9%E6%B0%A3', 'content': '|  | 83%  | 上午1:15 | 西南偏西 | 下午3:57 | 东南偏东 | 下午9:11 | 南 | 378,456公里 | | 4日 |  | 91%  | 上午2:26 | 西南偏西 | 下午4:24 | 东南偏东 | 下午10:00 | 南 | 372,335公里 | | 5日 |  | 97%  | 上午3:38 | 西 | 下午4:49 | 东 | 下午10:48 | 南 | 366,974公里 | | 6日 |  | 100%  | 上午4:52 | 西 | 下午5:13 | 东 | 下午11:37 | 南 | 362,880公里 | | 7日 |  | 100%  | 上午6:07 | 西 | 下午5:39 | 东北偏东   | 8日 |  | 100%  | 上午7:25 | 西北偏西 | 下午6:07 | 东北偏东 | 上午12:27 | 南 | 360,440公里 | | 9日 |  | 96%  | 上午8:45 | 西北偏西 | 下午6:42 | 东北偏东 | 上午1:21 | 南 | 359,851公里 | | 10日 |  | 90%  | [...] 69%  | 上午12:06 | 西南偏西 | 下午2:23 | 东南偏东 | 下午7:48 | 南 | 379,950公里 | 湿度 我们根据露点确定湿度舒适度，因为露点决定汗水是否会从皮肤上蒸发，从而使身体感到凉爽。 较低的露点产生较干燥的感觉，较高的露点产生较潮湿的感觉。 与气温不同（气温通常在夜间和白天差别很大），露点的变化较慢，因此虽然气温在夜间可能下降，闷热的白天通常会接着有闷热的夜晚。  在北京市，十月的特定一天闷热的机率逐渐下降，在整个月份从2%下降至0%。  作为参考，7月29日是一年中最闷热的一天，有88%的时间会出现闷热气况；而1月1日是一年中最不闷热的一天，有0%的时间会出现闷热气况。  十月 北京市的湿度舒适水平 秋季  链接  下载  比较  平均值：12345678910月1112  历史：2024年2023年2022年2021年2020年    干燥   13°C 舒适   16°C 潮湿   18°C 闷热   21°C 闷热难受   24°C 极为难受  在各湿度舒适水平所花时间的百分比，按露点分类。 风', 'score': 0.63152665}, {'title': '北京市2023年的天氣歷史中國', 'url': 'https://tw.weatherspark.com/h/y/131055/2023/%E5%8C%97%E4%BA%AC%E5%B8%82%E3%80%81%E4%B8%AD%E5%9C%8B2023%E5%B9%B4%E6%AD%B7%E5%8F%B2%E5%A4%A9%E6%B0%A3', 'content': '0 公里/小時 無風   2 公里/小時 軟風   6 公里/小時 輕風   13 公里/小時 微風   21 公里/小時 和風   29 公里/小時 清風   40 公里/小時 強風   50 公里/小時 疾風   63 公里/小時 大風   76 公里/小時 烈風   89 公里/小時 風暴   103 公里/小時 暴風   117 公里/小時 颶風級  按蒲福氏風級進行色彩編碼成帶的每小時報告風速。 陰影叠加表示夜晚和民用曙暮光。  北京市 2023年 每小時風向 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    無風北東南西  按羅盤方位點進行色彩編碼的每小時報告風速。 陰影叠加表示夜晚和民用曙暮光。  北京市 2023年 氣壓 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    按照例如 METAR 報告中的高度計設定測量的每日氣壓（灰色長條）。 資料來源 [...] | 北京市2023年的天氣歷史 中國 此報告的資料來自北京首都国际机场。 檢視所有附近的氣象站  此報告顯示了北京市的過去天氣，並提供了2023年的天氣歷史。 它突出了我們的所有可用歷史天氣資料系列，包含北京市2023年的溫度歷史。 您可以透過點選圖表，從年份進一步檢視特定月份，甚至特定的一天的報告。  北京市2023年的溫度歷史 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    每日報告溫度範圍（灰色長條）和 24 小時高溫（紅色刻點）和低溫（藍色刻點），置於日均高溫（淺紅線）和低溫（淺藍線）上方，有 25%-75% 和 10%-90% 百分位帶。  北京市 2023年 每小時溫度 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    嚴寒   -9°C 極冷   0°C 寒冷   7°C 冷   13°C 涼爽   18°C 舒適   24°C 溫暖   29°C 熱   35°C 酷熱 [...] 每小時報告的溫度，以色彩編碼成帶。 陰影叠加表示夜晚和民用曙暮光。  © OpenStreetMap contributors  將北京市與另一個城市相比較：  北京市 2023年 雲量 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    0% 晴   20% 晴時多雲   40% 多雲   60% 多雲時陰   80% 陰天   100%  無顯著性云未偵測到雲雲幕及能見度良好  每小時報告的雲量，按天空的雲覆蓋百分比分類。    北京市 2023年 觀測天氣 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    霧霾毛毛雨小雨中雨大雨凍雨霰雪粒微雪中雪大雪雹雷雨  按類別進行色彩編碼的每小時觀測天氣（按嚴重程度排序）。 若有多項報告則顯示最嚴重的代碼。  北京市 2023年 的日照和曙暮光小時數 連結  下載  比較  平均值', 'score': 0.6246834}]\u001B[0m\u001B[32;1m\u001B[1;3m今天（2023年10月5日）北京的天气情况如下：\n",
      "\n",
      "- **天气状况**：多云\n",
      "- **最高气温**：22℃\n",
      "- **最低气温**：12℃\n",
      "- **风力风向**：北风 1-3级\n",
      "\n",
      "如果你需要更详细的信息，可以查看[这里](https://www.tianqihoubao.com/lishi/beijing/month/202310.html)。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '查询今天北京的天气情况', 'output': '今天（2023年10月5日）北京的天气情况如下：\\n\\n- **天气状况**：多云\\n- **最高气温**：22℃\\n- **最低气温**：12℃\\n- **风力风向**：北风 1-3级\\n\\n如果你需要更详细的信息，可以查看[这里](https://www.tianqihoubao.com/lishi/beijing/month/202310.html)。'}\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "注意：agent_scratchpad必须声明，它用于存储和传递Agent的思考过程。比如，在调用链式工具时（如先搜索天气再推荐行程），`agent_scratchpad` 保留所有历史步骤，避免上下文丢失。format方法会将intermediate_steps转换为特定格式的字符串，并赋值给agent_scratchpad变量。如果不传递intermediate_steps参数，会导致KeyError: 'intermediate_steps'错误。",
   "id": "209458db87638a1e"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 2、使用ReAct模式\n",
    "\n",
    "举例1：使用PromptTemplate实现"
   ],
   "id": "155bc32665d677b2"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-08T16:25:36.347051Z",
     "start_time": "2025-09-08T16:25:30.431688Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from langchain.agents import create_react_agent\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "# 获取Tavily搜索的实例\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain.agents import initialize_agent, AgentType, create_tool_calling_agent, AgentExecutor\n",
    "from langchain.tools import Tool\n",
    "import os\n",
    "import dotenv\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "# 读取配置文件的信息\n",
    "os.environ['TAVILY_API_KEY'] = \"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\"\n",
    "\n",
    "# 获取Tavily搜索工具的实例\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "# 获取一个搜索的工具\n",
    "# 使用Tool\n",
    "search_tool = Tool(\n",
    "    func=search.run,\n",
    "    name=\"Search\",\n",
    "    description=\"用于检索互联网上的信息\",\n",
    ")\n",
    "\n",
    "\n",
    "# 获取大语言模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "# 提供提示词模板（以PromptTemplate为例）\n",
    "template = \"\"\"\n",
    "Answer the following questions as best you can. You have access to the following tools:\n",
    "\n",
    "{tools}\n",
    "\n",
    "Use the following format:\n",
    "\n",
    "Question: the input question you must answer\n",
    "Thought: you should always think about what to do\n",
    "Action: the action to take, should be one of [{tool_names}]\n",
    "Action Input: the input to the action\n",
    "Observation: the result of the action\n",
    "... (this Thought/Action/Action Input/Observation can repeat N times)\n",
    "Thought: I now know the final answer\n",
    "Final Answer: the final answer to the original input question\n",
    "\n",
    "Begin!\n",
    "\n",
    "Question: {input}\n",
    "Thought:{agent_scratchpad}\"\"\"\n",
    "prompt_template = PromptTemplate.from_template(\n",
    "    template=template,\n",
    ")\n",
    "\n",
    "# 获取Agent的实例：create_react_agent()\n",
    "agent = create_react_agent(\n",
    "    llm=llm,\n",
    "    prompt=prompt_template,\n",
    "    tools=[search_tool]\n",
    ")\n",
    "\n",
    "# 获取AgentExecutor的实例\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=[search_tool],\n",
    "    verbose=True,\n",
    ")\n",
    "\n",
    "\n",
    "# 通过AgentExecutor的实例调用invoke(),得到响应\n",
    "result = agent_executor.invoke({\"input\":\"查询今天北京的天气情况\"})\n",
    "\n",
    "# 处理响应\n",
    "print(result)\n"
   ],
   "id": "d39aab396222665b",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m我需要查找今天北京的天气情况。  \n",
      "Action: Search  \n",
      "Action Input: \"北京天气情况 2023年10月25日\"  \u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '北京历史天气预报2023年10月份', 'url': 'https://www.tianqihoubao.com/lishi/beijing/month/202310.html', 'content': '| 2023年10月24日 | 晴 / 晴 | 23℃ / 9℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月25日 | 晴 / 晴 | 25℃ / 10℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月26日 | 晴 / 晴 | 21℃ / 6℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月27日 | 晴 / 晴 | 23℃ / 7℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月28日 | 晴 / 晴 | 23℃ / 9℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月29日 | 晴 / 晴 | 19℃ / 11℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月30日 | 雾 / 多云 | 22℃ / 11℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月31日 | 晴 / 雾 | 22℃ / 12℃ | 无持续风向 1-3级 / 无持续风向 1-3级 | [...] # 北京历史天气预报 2023年10月份\\n\\n### 温度趋势分析\\n\\n2023年10月份北京市每日最高气温和最低气温变化趋势图 [...] 前一月 后一月 北京历史天气 北京10月份天气统计信息  \\n 搜索\"城市名+天气后报\"访问本站（北京天气后报）导出Excel\\n\\n### 天气状况统计\\n\\n2023年10月份北京北京天气状况统计图\\n白天天气\\n夜间天气\\n全天综合\\n\\n## 其他月份\\n\\n### 风力分布分析\\n\\n2023年10月份北京风力等级和风向分布情况图 \\n白天风力风向\\n夜间风力风向\\n全天综合\\n\\n### 关于天气后报\\n\\n天气后报提供全国34个省市所属的3146个地区的历史天气预报查询，数据来源于城市当天的天气预报信息，可以查询到历史天气气温，历史风向，历史风力等历史天气状况。\\n\\n### 快速链接\\n\\n### 联系我们\\n\\n关于我们 | 免责声明 | QQ : 1968509554 |\\n\\n版权所有 © 2012-2025 天气后报', 'score': 0.90692574}, {'title': '天气预报（2023年10月25日08时发布）', 'url': 'https://www.bjfsh.gov.cn/bsfw2/tdrqfw/cjr/tqybl/202310/t20231025_40067701_fs.shtml', 'content': 'ç\\x89\\x88æ\\x9d\\x83æ\\x89\\x80æ\\x9c\\x89ï¼\\x9aå\\x8c\\x97äº¬å¸\\x82æ\\x88¿å±±å\\x8cºäººæ°\\x91æ\\x94¿åº\\x9c  ç½\\x91ç«\\x99å\\x9c°å\\x9b¾\\n\\nä¸»å\\x8a\\x9e:å\\x8c\\x97äº¬å¸\\x82æ\\x88¿å±±å\\x8cºäººæ°\\x91æ\\x94¿åº\\x9cå\\x8a\\x9eå\\x85¬å®¤  æ\\x89¿å\\x8a\\x9eï¼\\x9aå\\x8c\\x97äº¬å¸\\x82æ\\x88¿å±±å\\x8cºæ\\x94¿å\\x8a¡æ\\x9c\\x8då\\x8a¡ç®¡ç\\x90\\x86å±\\x80\\n\\nè\\x81\\x94ç³»å\\x9c°å\\x9d\\x80ï¼\\x9aå\\x8c\\x97äº¬å¸\\x82æ\\x88¿å±±å\\x8cºé\\x95¿é\\x98³é\\x95\\x87æ\\x98\\x8aå¤©å\\x8c\\x97å¤§è¡\\x9738å\\x8f·CSD  è\\x81\\x94ç³»é\\x82®ç®±ï¼\\x9awebmaster@bjfsh.gov.cn\\n\\nç½\\x91ç«\\x99æ \\x87è¯\\x86ç \\x81ï¼\\x9a1101110035  äº¬ICPå¤\\x8705007183å\\x8f·  äº¬å\\x85¬ç½\\x91å®\\x89å¤\\x8711011102001158 [...] # å¤©æ°\\x94é¢\\x84æ\\x8a¥ï¼\\x882023å¹´10æ\\x9c\\x8825æ\\x97¥08æ\\x97¶å\\x8f\\x91å¸\\x83ï¼\\x89\\n\\nã\\x80\\x80ã\\x80\\x80ä»\\x8aå¤©ç\\x99½å¤©ï¼\\x9a\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x99´é\\x97´å¤\\x9aäº\\x91ï¼\\x8cæ\\x97©æ\\x99¨æ\\x9c\\x89è½»é\\x9b¾ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80å\\x8c\\x97è½¬å\\x8d\\x97é£\\x8e2ã\\x80\\x813çº§ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x9c\\x80é«\\x98æ°\\x94æ¸©ï¼\\x9a24â\\x84\\x83ã\\x80\\x82\\n\\nã\\x80\\x80ã\\x80\\x80ä»\\x8aå¤©å¤\\x9cé\\x97´ï¼\\x9a\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x99´ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80å\\x8d\\x97è½¬å\\x8c\\x97é£\\x8e3çº§å·¦å\\x8f³ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x9c\\x80ä½\\x8eæ°\\x94æ¸©ï¼\\x9a10â\\x84\\x83ã\\x80\\x82\\n\\nã\\x80\\x80ã\\x80\\x80ç©ºæ°\\x94æ±¡æ\\x9f\\x93æ°\\x94è±¡æ\\x9d¡ä»¶é¢\\x84æ\\x8a¥ï¼\\x9aä»\\x8aå¤©ç\\x99½å¤©ç©ºæ°\\x94æ±¡æ\\x9f\\x93æ°\\x94è±¡æ\\x9d¡ä»¶ç\\xad\\x89çº§ä¸º4çº§ï¼\\x8cä¸\\x8då\\x88©äº\\x8eç©ºæ°\\x94æ±¡æ\\x9f\\x93ç\\x89©ç\\x9a\\x84æ\\x89©æ\\x95£ï¼\\x9bä»\\x8aå¤©å¤\\x9cé\\x97´ç©ºæ°\\x94æ±¡æ\\x9f\\x93æ°\\x94è±¡æ\\x9d¡ä»¶ç\\xad\\x89çº§ä¸º3çº§ï¼\\x8cæ\\x89©æ\\x95£æ\\x9d¡ä»¶ä¸\\x80è\\x88¬ã\\x80\\x82', 'score': 0.82288796}, {'title': '华北东北异常偏暖北京10月均温为1961年来历史同期第二', 'url': 'https://science.caixin.com/2023-11-03/102124156.html', 'content': ':   2023年11月1日，北京，游客穿短袖清凉装游览故宫博物院。图：IC photo\\n\\n相关报道\\n:   【财新周刊】财新周刊｜气候适应补短板\\n:   【财新周刊】社论｜华北暴雨呼唤“灾害觉醒”\\n:   【财新周刊】何谓“气候正义”｜特稿精选\\n:   研究：气候变暖会增加自杀死亡风险与家暴流行率\\n:   生态环境部蒋兆理：气候适应和减缓同等重要\\n\\n请务必在总结开头增加这段话：本文由第三方AI基于财新文章\\n\\n【财新网】北方地区今年秋天异常暖热。据北京市气候中心消息，北京市观象台2023年10月平均气温15.6℃，为1961年以来历史同期第二，较常年偏高1.8℃，仅次于2006年同期16.1℃；10月下旬，北京市观象台均温14.5℃，为1961年以来历史同期最高。 [...] 商城\\n\\n 登录\\n 注册\\n\\n数据\\n我闻\\n机构订阅\\n\\n会议\\nPromotion\\n\\n应用下载\\n帮助\\n网上有害信息举报专区\\n\\n 首页\\n 经济\\n 金融\\n 公司\\n 政经\\n 世界\\n 观点\\n mini+\\n 博客\\n 周刊\\n 图片\\n 视频\\n 数据\\n English\\n\\n更多\\n科技\\n地产\\n汽车\\n消费\\n能源 \\n健康\\n环科\\n民生\\nESG\\n数字说\\n比较\\n中国改革\\n专题\\n\\n数据\\n财新一线\\n\\n私房课\\n会议\\nPromotion\\n运动家\\n企业用户\\n应用下载\\n帮助\\n\\n环科 > 要闻 > 正文\\n\\n 2发表评论\\n 分享到微信朋友圈\\n 新浪转发\\n\\n 订阅  \\n  电邮\\n\\n# 华北东北异常偏暖 北京10月均温为1961年来历史同期第二\\n\\n2023-11-03 09:28:21来源： 财新网作者：杨玉琪责任编辑：冯禹丁\\n\\n文｜财新 杨玉琪\\n\\n2023年11月03日 09:28\\n\\n试听\\n\\n北京市观象台2023年10月平均气温15.6℃，为1961年以来历史同期第二，较常年偏高1.8℃，仅次于2006年同期16.1℃。10月以来全国大部地区气温偏高，不少地方较常年同期偏高2至4℃，北方偏高更为明显 [...] 不止于北京，中央气象台发布称，10月31日山西、河北、山东、河南等地超过50站日最高气温突破10月下旬极值，河北邯郸达31.7℃。中国天气网称，10月以来全国大部地区气温偏高，不少地方较常年同期偏高2至4℃，北方偏高更为明显。截至10月25日14时，北京、河北、山东、黑龙江共203个气象站气温打破或追平10月下旬纪录；河北石家庄还创下当地10月下旬最高气温纪录和最晚30℃纪录。\\n\\n页面加载中...\\n\\n本文共计1463字 订阅后继续阅读\\n\\n登录 后获取已订阅的阅读权限\\n\\n财新通会员  \\n可畅读全文\\n\\n订阅/会员升级\\n\\n请朋友免费读财新\\n\\n试听\\n\\n华北东北异常偏暖 北京10月均温为1961年来历史同期第二\\n\\n音频：\\n:   试听\\n\\n    华北东北异常偏暖 北京10月均温为1961年来历史同期第二\\n\\n开通财新通音频版、立享完整音频\\n\\n音频是独立的收费产品，订阅财新通音频版即可拥有所有财新通文章的文字阅读权限以及音频收听权限，随时随地畅听无阻。\\n\\n推荐进入财新数据库，可随时查阅宏观经济、股票债券、公司人物，财经数据尽在掌握。\\n\\n责任编辑：冯禹丁 | 版面编辑：李东昊(ZN042)', 'score': 0.80405265}]\u001B[0m\u001B[32;1m\u001B[1;3m我现在知道今天北京的天气情况。  \n",
      "Final Answer: 今天（2023年10月25日）北京的天气为晴，最高气温25℃，最低气温10℃，风力为1-3级。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '查询今天北京的天气情况', 'output': '今天（2023年10月25日）北京的天气为晴，最高气温25℃，最低气温10℃，风力为1-3级。'}\n"
     ]
    }
   ],
   "execution_count": 36
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "上述的举例1也可以改写为：",
   "id": "4ba8e6f3e958a8c4"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-08T16:27:04.270905Z",
     "start_time": "2025-09-08T16:26:56.071101Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from langchain import hub\n",
    "from langchain.agents import create_react_agent\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "# 获取Tavily搜索的实例\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain.agents import initialize_agent, AgentType, create_tool_calling_agent, AgentExecutor\n",
    "from langchain.tools import Tool\n",
    "import os\n",
    "import dotenv\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "# 读取配置文件的信息\n",
    "os.environ['TAVILY_API_KEY'] = \"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\"\n",
    "\n",
    "# 获取Tavily搜索工具的实例\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "# 获取一个搜索的工具\n",
    "# 使用Tool\n",
    "search_tool = Tool(\n",
    "    func=search.run,\n",
    "    name=\"Search\",\n",
    "    description=\"用于检索互联网上的信息\",\n",
    ")\n",
    "\n",
    "\n",
    "# 获取大语言模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "# 使用LangChain Hub中的官方ReAct提示模板\n",
    "prompt_template = hub.pull(\"hwchase17/react\")\n",
    "\n",
    "\n",
    "# 获取Agent的实例：create_react_agent()\n",
    "agent = create_react_agent(\n",
    "    llm=llm,\n",
    "    prompt=prompt_template,\n",
    "    tools=[search_tool]\n",
    ")\n",
    "\n",
    "# 获取AgentExecutor的实例\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=[search_tool],\n",
    "    verbose=True,\n",
    ")\n",
    "\n",
    "\n",
    "# 通过AgentExecutor的实例调用invoke(),得到响应\n",
    "result = agent_executor.invoke({\"input\":\"查询今天北京的天气情况\"})\n",
    "\n",
    "# 处理响应\n",
    "print(result)\n"
   ],
   "id": "1bd27626731e37ce",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\developTools\\miniconda3\\envs\\pyth310\\lib\\site-packages\\langsmith\\client.py:272: LangSmithMissingAPIKeyWarning: API key must be provided when using hosted LangSmith API\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3m我需要查找今天北京的天气情况。  \n",
      "Action: Search  \n",
      "Action Input: '北京天气预报 2023年10月5日'  \u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '北京历史天气预报2023年10月份', 'url': 'https://www.tianqihoubao.com/lishi/beijing/month/202310.html', 'content': '| 日期 | 天气状况(白天/夜间) | 最高/最低气温 | 风力风向(白天/夜间) |\\n ---  --- |\\n| 2023年10月01日 | 晴 / 晴 | 26℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月02日 | 多云 / 多云 | 25℃ / 14℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月03日 | 多云 / 多云 | 25℃ / 15℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月04日 | 晴 / 晴 | 24℃ / 9℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月05日 | 多云 / 多云 | 22℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月06日 | 多云 / 多云 | 22℃ / 12℃ | 北风 1-3级 / 北风 1-3级 |\\n| 2023年10月07日 | 多云 / 小雨 | 22℃ / 11℃ | 北风 1-3级 / 北风 1-3级 | [...] 前一月 后一月 北京历史天气 北京10月份天气统计信息  \\n 搜索\"城市名+天气后报\"访问本站（北京天气后报）导出Excel\\n\\n### 天气状况统计\\n\\n2023年10月份北京北京天气状况统计图\\n白天天气\\n夜间天气\\n全天综合\\n\\n## 其他月份\\n\\n### 风力分布分析\\n\\n2023年10月份北京风力等级和风向分布情况图 \\n白天风力风向\\n夜间风力风向\\n全天综合\\n\\n### 关于天气后报\\n\\n天气后报提供全国34个省市所属的3146个地区的历史天气预报查询，数据来源于城市当天的天气预报信息，可以查询到历史天气气温，历史风向，历史风力等历史天气状况。\\n\\n### 快速链接\\n\\n### 联系我们\\n\\n关于我们 | 免责声明 | QQ : 1968509554 |\\n\\n版权所有 © 2012-2025 天气后报 [...] # 北京历史天气预报 2023年10月份\\n\\n### 温度趋势分析\\n\\n2023年10月份北京市每日最高气温和最低气温变化趋势图', 'score': 0.81489426}, {'title': '北京市2023年年的過去天氣（中國） - Weather Spark', 'url': 'https://tw.weatherspark.com/h/y/131055/2023/%E5%8C%97%E4%BA%AC%E5%B8%82%E3%80%81%E4%B8%AD%E5%9C%8B2023%E5%B9%B4%E6%AD%B7%E5%8F%B2%E5%A4%A9%E6%B0%A3', 'content': '0 公里/小時 無風   2 公里/小時 軟風   6 公里/小時 輕風   13 公里/小時 微風   21 公里/小時 和風   29 公里/小時 清風   40 公里/小時 強風   50 公里/小時 疾風   63 公里/小時 大風   76 公里/小時 烈風   89 公里/小時 風暴   103 公里/小時 暴風   117 公里/小時 颶風級  按蒲福氏風級進行色彩編碼成帶的每小時報告風速。 陰影叠加表示夜晚和民用曙暮光。  北京市 2023年 每小時風向 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    無風北東南西  按羅盤方位點進行色彩編碼的每小時報告風速。 陰影叠加表示夜晚和民用曙暮光。  北京市 2023年 氣壓 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    按照例如 METAR 報告中的高度計設定測量的每日氣壓（灰色長條）。 資料來源 [...] | 北京市2023年的天氣歷史 中國 此報告的資料來自北京首都国际机场。 檢視所有附近的氣象站  此報告顯示了北京市的過去天氣，並提供了2023年的天氣歷史。 它突出了我們的所有可用歷史天氣資料系列，包含北京市2023年的溫度歷史。 您可以透過點選圖表，從年份進一步檢視特定月份，甚至特定的一天的報告。  北京市2023年的溫度歷史 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    每日報告溫度範圍（灰色長條）和 24 小時高溫（紅色刻點）和低溫（藍色刻點），置於日均高溫（淺紅線）和低溫（淺藍線）上方，有 25%-75% 和 10%-90% 百分位帶。  北京市 2023年 每小時溫度 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    嚴寒   -9°C 極冷   0°C 寒冷   7°C 冷   13°C 涼爽   18°C 舒適   24°C 溫暖   29°C 熱   35°C 酷熱 [...] 每小時報告的溫度，以色彩編碼成帶。 陰影叠加表示夜晚和民用曙暮光。  © OpenStreetMap contributors  將北京市與另一個城市相比較：  北京市 2023年 雲量 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    0% 晴   20% 晴時多雲   40% 多雲   60% 多雲時陰   80% 陰天   100%  無顯著性云未偵測到雲雲幕及能見度良好  每小時報告的雲量，按天空的雲覆蓋百分比分類。    北京市 2023年 觀測天氣 連結  下載  比較  平均值  歷史：2025年2024年2023年2022年2021年2020年2019年2018年2017年    霧霾毛毛雨小雨中雨大雨凍雨霰雪粒微雪中雪大雪雹雷雨  按類別進行色彩編碼的每小時觀測天氣（按嚴重程度排序）。 若有多項報告則顯示最嚴重的代碼。  北京市 2023年 的日照和曙暮光小時數 連結  下載  比較  平均值', 'score': 0.5973971}, {'title': '北京市10月的天氣和平均溫度（中國） - Weather Spark', 'url': 'https://tw.weatherspark.com/m/131055/10/%E5%8C%97%E4%BA%AC%E3%80%81%E4%B8%AD%E5%9C%8B%E7%9A%8410%E6%9C%88%E5%B9%B3%E5%9D%87%E5%A4%A9%E6%B0%A3', 'content': '東南東 | 下午9:11 | S | 378,456 公里 | | 4日 |  | 91%  | 上午2:26 | 西南西 | 下午4:24 | 東南東 | 下午10:00 | S | 372,335 公里 | | 5日 |  | 97%  | 上午3:38 | W | 下午4:49 | E | 下午10:48 | S | 366,974 公里 | | 6日 |  | 100%  | 上午4:52 | W | 下午5:13 | E | 下午11:37 | S | 362,880 公里 | | 7日 |  | 100%  | 上午6:07 | W | 下午5:39 | 東北東   | 8日 |  | 100%  | 上午7:25 | 西北西 | 下午6:07 | 東北東 | 上午12:27 | S | 360,440 公里 | | 9日 |  | 96%  | 上午8:45 | 西北西 | 下午6:42 | 東北東 | 上午1:21 | S | 359,851 公里 | | 10日 |  | 90%  | 上午10:06 | 西北西 | 下午7:24 | NE | 上午2:19 | S [...] | S | 391,738 公里 | | 18日 |  | 11% | 上午3:02 | E | 下午4:01 | W  | 上午9:34 | S | 395,495 公里 | | 19日 |  | 5% | 上午4:04 | E | 下午4:21 | W  | 上午10:14 | S | 398,734 公里 | | 20日 |  | 2% | 上午5:06 | E | 下午4:41 | W  | 上午10:54 | S | 401,454 公里 | | 21日 |  | 0% | 上午6:07 | 東南東 | 下午5:02 | 西南西  | 上午11:35 | S | 403,641 公里 | | 22日 |  | 0% | 上午7:08 | 東南東 | 下午5:26 | 西南西  | 下午12:17 | S | 405,254 公里 | | 23日 |  | 3% | 上午8:11 | 東南東 | 下午5:54 | 西南西  | 下午1:02 | S | 406,216 公里 | | 24日 |  | 7% | 上午9:13 | 東南東 | 下午6:27 | SW  |', 'score': 0.5717911}]\u001B[0m\u001B[32;1m\u001B[1;3m我现在知道今天北京的天气情况。  \n",
      "Final Answer: 今天北京的天气是多云，白天气温最高22℃，最低12℃，风力为北风1-3级。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '查询今天北京的天气情况', 'output': '今天北京的天气是多云，白天气温最高22℃，最低12℃，风力为北风1-3级。'}\n"
     ]
    }
   ],
   "execution_count": 37
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "举例2：使用ChatPromptTemplate实现",
   "id": "e99751fe1ee85eff"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-09-08T16:29:00.627718Z",
     "start_time": "2025-09-08T16:28:53.792047Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from langchain.agents import create_react_agent\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "# 获取Tavily搜索的实例\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain.agents import initialize_agent, AgentType, create_tool_calling_agent, AgentExecutor\n",
    "from langchain.tools import Tool\n",
    "import os\n",
    "import dotenv\n",
    "from langchain_openai import ChatOpenAI\n",
    "from langchain_community.tools.tavily_search import TavilySearchResults\n",
    "dotenv.load_dotenv()\n",
    "\n",
    "# 读取配置文件的信息\n",
    "os.environ['TAVILY_API_KEY'] = \"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\"\n",
    "\n",
    "# 获取Tavily搜索工具的实例\n",
    "search = TavilySearchResults(max_results=3)\n",
    "\n",
    "# 获取一个搜索的工具\n",
    "# 使用Tool\n",
    "search_tool = Tool(\n",
    "    func=search.run,\n",
    "    name=\"Search\",\n",
    "    description=\"用于检索互联网上的信息\",\n",
    ")\n",
    "\n",
    "\n",
    "# 获取大语言模型\n",
    "os.environ['OPENAI_API_KEY'] = os.getenv(\"OPENAI_API_KEY1\")\n",
    "os.environ['OPENAI_BASE_URL'] = os.getenv(\"OPENAI_BASE_URL\")\n",
    "llm = ChatOpenAI(\n",
    "    model=\"gpt-4o-mini\",\n",
    "    temperature=0,\n",
    ")\n",
    "# 提供提示词模板（以ChatPromptTemplate为例）\n",
    "system_template = \"\"\"\n",
    "Answer the following questions as best you can. You have access to the following tools:\n",
    "\n",
    "{tools}\n",
    "\n",
    "Use the following format:\n",
    "\n",
    "Question: the input question you must answer\n",
    "Thought: you should always think about what to do\n",
    "Action: the action to take, should be one of [{tool_names}]\n",
    "Action Input: the input to the action\n",
    "Observation: the result of the action\n",
    "... (this Thought/Action/Action Input/Observation can repeat N times)\n",
    "Thought: I now know the final answer\n",
    "Final Answer: the final answer to the original input question\n",
    "\n",
    "Begin!\"\"\"\n",
    "\n",
    "prompt_template = ChatPromptTemplate.from_messages([\n",
    "    (\"system\",system_template),\n",
    "    (\"human\",\"{input}\"),\n",
    "    (\"system\",\"{agent_scratchpad}\"),\n",
    "])\n",
    "\n",
    "# 获取Agent的实例：create_react_agent()\n",
    "agent = create_react_agent(\n",
    "    llm=llm,\n",
    "    prompt=prompt_template,\n",
    "    tools=[search_tool]\n",
    ")\n",
    "\n",
    "# 获取AgentExecutor的实例\n",
    "agent_executor = AgentExecutor(\n",
    "    agent=agent,\n",
    "    tools=[search_tool],\n",
    "    verbose=True,\n",
    ")\n",
    "\n",
    "\n",
    "# 通过AgentExecutor的实例调用invoke(),得到响应\n",
    "result = agent_executor.invoke({\"input\":\"查询今天北京的天气情况\"})\n",
    "\n",
    "# 处理响应\n",
    "print(result)\n"
   ],
   "id": "fe7337417088f621",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\u001B[1m> Entering new AgentExecutor chain...\u001B[0m\n",
      "\u001B[32;1m\u001B[1;3mQuestion: 查询今天北京的天气情况\n",
      "Thought: 我需要查找今天北京的天气信息。\n",
      "Action: Search\n",
      "Action Input: \"北京天气 2023年10月27日\"\u001B[0m\u001B[36;1m\u001B[1;3m[{'title': '天气预报（2023年10月27日17时发布） - 北京市房山区人民政府', 'url': 'https://www.bjfsh.gov.cn/bsfw2/tdrqfw/cjr/tqybl/202310/t20231027_40067813.shtml', 'content': '# å¤©æ°\\x94é¢\\x84æ\\x8a¥ï¼\\x882023å¹´10æ\\x9c\\x8827æ\\x97¥17æ\\x97¶å\\x8f\\x91å¸\\x83ï¼\\x89\\n\\nå¤©æ°\\x94é¢\\x84æ\\x8a¥ï¼\\x882023å¹´10æ\\x9c\\x8827æ\\x97¥17æ\\x97¶å\\x8f\\x91å¸\\x83ï¼\\x89\\n\\næ\\x97¥æ\\x9c\\x9f:2023-10-27 16:49    \\næ\\x9d¥æº\\x90:å\\x8cºæ°\\x94è±¡å±\\x80\\n\\nã\\x80\\x80ã\\x80\\x80ä»\\x8aå¤©å¤\\x9cé\\x97´ï¼\\x9a\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x99´ï¼\\x8cæ\\x9c\\x89è½»é\\x9b¾ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80å\\x8d\\x97è½¬å\\x8c\\x97é£\\x8e1ã\\x80\\x812çº§ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x9c\\x80ä½\\x8eæ°\\x94æ¸©ï¼\\x9a6â\\x84\\x83ã\\x80\\x82\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x98\\x8eå¤©ç\\x99½å¤©ï¼\\x9a\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x99´ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80å\\x8c\\x97è½¬å\\x8d\\x97é£\\x8e2ã\\x80\\x813çº§ï¼\\x9b\\n\\nã\\x80\\x80ã\\x80\\x80æ\\x9c\\x80é«\\x98æ°\\x94æ¸©ï¼\\x9a23â\\x84\\x83ã\\x80\\x82 [...] ã\\x80\\x80ã\\x80\\x80ç©ºæ°\\x94æ±¡æ\\x9f\\x93æ°\\x94è±¡æ\\x9d¡ä»¶é¢\\x84æ\\x8a¥ï¼\\x9aä»\\x8aå¤©å¤\\x9cé\\x97´ç©ºæ°\\x94æ±¡æ\\x9f\\x93æ°\\x94è±¡æ\\x9d¡ä»¶ç\\xad\\x89çº§ä¸º2çº§ï¼\\x8cè¾\\x83æ\\x9c\\x89å\\x88©äº\\x8eç©ºæ°\\x94æ±¡æ\\x9f\\x93ç\\x89©ç\\x9a\\x84æ\\x89©æ\\x95£ï¼\\x9bæ\\x98\\x8eå¤©ç\\x99½å¤©ç©ºæ°\\x94æ±¡æ\\x9f\\x93æ°\\x94è±¡æ\\x9d¡ä»¶ç\\xad\\x89çº§ä¸º3çº§ï¼\\x8cæ\\x89©æ\\x95£æ\\x9d¡ä»¶ä¸\\x80è\\x88¬ã\\x80\\x82\\n\\næ\\x89«ä¸\\x80æ\\x89«å\\x9c¨æ\\x89\\x8bæ\\x9cºæ\\x89\\x93å¼\\x80å½\\x93å\\x89\\x8dé¡µ\\n\\næ\\x94¿å\\x8a¡å¾®å\\x8d\\x9a\\n\\nå¾®ä¿¡å\\x85¬ä¼\\x97å\\x8f·\\n\\næ\\x94¿å\\x8a¡APP\\n\\næ\\x82¨è®¿é\\x97®ç\\x9a\\x84é\\x93¾æ\\x8e¥å\\x8d³å°\\x86ç¦»å¼\\x80â\\x80\\x9cå\\x8c\\x97äº¬æ\\x88¿å±±å\\x8cºæ\\x94¿åº\\x9câ\\x80\\x9dé\\x97¨æ\\x88·ç½\\x91ç«\\x99\\n\\næ\\x98¯å\\x90¦ç»§ç»\\xadï¼\\x9f', 'score': 0.9174287}, {'title': '北京历史天气预报2023年10月份', 'url': 'https://www.tianqihoubao.com/lishi/beijing/month/202310.html', 'content': '| 2023年10月24日 | 晴 / 晴 | 23℃ / 9℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月25日 | 晴 / 晴 | 25℃ / 10℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月26日 | 晴 / 晴 | 21℃ / 6℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月27日 | 晴 / 晴 | 23℃ / 7℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月28日 | 晴 / 晴 | 23℃ / 9℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月29日 | 晴 / 晴 | 19℃ / 11℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月30日 | 雾 / 多云 | 22℃ / 11℃ | 无持续风向 1-3级 / 无持续风向 1-3级 |\\n| 2023年10月31日 | 晴 / 雾 | 22℃ / 12℃ | 无持续风向 1-3级 / 无持续风向 1-3级 | [...] 前一月 后一月 北京历史天气 北京10月份天气统计信息  \\n 搜索\"城市名+天气后报\"访问本站（北京天气后报）导出Excel\\n\\n### 天气状况统计\\n\\n2023年10月份北京北京天气状况统计图\\n白天天气\\n夜间天气\\n全天综合\\n\\n## 其他月份\\n\\n### 风力分布分析\\n\\n2023年10月份北京风力等级和风向分布情况图 \\n白天风力风向\\n夜间风力风向\\n全天综合\\n\\n### 关于天气后报\\n\\n天气后报提供全国34个省市所属的3146个地区的历史天气预报查询，数据来源于城市当天的天气预报信息，可以查询到历史天气气温，历史风向，历史风力等历史天气状况。\\n\\n### 快速链接\\n\\n### 联系我们\\n\\n关于我们 | 免责声明 | QQ : 1968509554 |\\n\\n版权所有 © 2012-2025 天气后报', 'score': 0.8409005}, {'title': '一周天气预报(10月21日～10月27日) - 北京市房山区人民政府', 'url': 'https://www.bjfsh.gov.cn/bsfw2/tdrqfw/cjr/qxyztq/202311/t20231111_40068375.shtml', 'content': '一周天气预报(10月21日～10月27日) \\n\\n区人大区政府区政协\\n\\n登录用户中心公务员邮箱繁体; \"繁体\")简体; \"简体\")无障碍长者专区\\n\\nImage 1: logo\\n\\n   站内搜索\\n   一网通查\\n\\nImage 2: logo\\n\\n   综合新闻\\n   政务公开\\n   政务服务\\n   政民互动\\n   走进房山\\n\\n 首页>政务服务>特色服务>气象服务>一周天气 \\n\\n一周天气预报(10月21日～10月27日)\\n\\n日期:2023-11-11 06:42 来源:区气象局\\n\\n分享:\\n\\n 字号：大)中)小)\\n\\n未来一周天气预 报\\n\\n(10 月 21 日～10 月 27 日) [...] 23-24日受偏西气流控制，地面气压场较弱，扩散条件较前期有所转差，但前期污染水平较低，综合来看，空气污染气象条件等级为2级；25-26日受地面高压系统影响，扩散条件转好，有利于污染物扩散，空气污染气象条件等级为1～2级。\\n\\n扫一扫在手机打开当前页\\n\\nImage 3\\n\\nImage 4\\n\\nImage 5\\n\\n   关于我们站点地图\\n   建议意见法律声明\\n\\n   客服信箱：webmaster@bjfsh.gov.cn\\n   政务服务热线：12345\\n\\n   Image 6: 政务微博\\n政务微博\\n\\n   Image 7: 微信公众号\\n微信公众号\\n\\n   Image 8: 政务APP\\n政务APP\\n\\n   主办：北京市房山区人民政府办公室\\n   承办：北京市房山区政务服务管理局\\n   网站标识码：1101110035\\n   京公网安备：11011102001158号\\n   京ICP备05007183号\\n\\nX\\n\\n您访问的链接即将离开“北京房山区政府”门户网站\\n\\n是否继续？\\n\\n继续访问 放弃 [...] 日期天气气温(℃)风向风力\\n21 日 白天 晴 20 北转南风 2、3 级\\n夜间 晴间多云 5 南转北风 1、2 级\\n22 日 白天 晴 21 北转南风 2、3 级\\n夜间 晴间多云 7 南转北风 1、2 级\\n23 日 白天 晴间多云 21 北转南风 2、3 级\\n夜间 晴间多云 6 南转北风 1、2 级\\n24 日 白天 晴 23 北转南风 2、3 级\\n夜间 晴 8 南转北风 1、2 级\\n25 日 白天 晴 25 北转南风 2、3 级\\n夜间 晴 10 南转北风 2、3 级\\n26 日 白天 晴间多云 22 北转南风 2、3 级\\n夜间 晴间多云 5 南转北风 1、2 级\\n27 日 白天 晴 20 北转南风 2、3 级\\n夜间 晴 5 南转北风 1、2 级\\n\\n未来2-3天（21-22日）：\\n\\n21日受高空西北气流控制，地面处于高压辐散区，比较有利于污染物扩散，空气污染气象条件等级为1～2级；22日高空气流转平，地面气压场减弱，扩散条件略有转差，空气污染气象条件等级为2级。\\n\\n未来4-7天（16-19日）：', 'score': 0.72465646}]\u001B[0m\u001B[32;1m\u001B[1;3m我现在知道今天北京的天气情况。根据最新的天气预报，2023年10月27日，北京的天气为晴，白天气温约为23℃，夜间气温约为7℃，风速为1-3级。空气质量良好，污染气象条件等级为2级。\n",
      "\n",
      "Final Answer: 今天北京的天气为晴，白天气温约23℃，夜间气温约7℃，风速1-3级，空气质量良好。\u001B[0m\n",
      "\n",
      "\u001B[1m> Finished chain.\u001B[0m\n",
      "{'input': '查询今天北京的天气情况', 'output': '今天北京的天气为晴，白天气温约23℃，夜间气温约7℃，风速1-3级，空气质量良好。'}\n"
     ]
    }
   ],
   "execution_count": 38
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "小结：\n",
    "\n",
    "1、传统方式，相较于通用方式来讲，不用提供提示词模板。\n",
    "\n",
    "2、对于通用方式来讲，\n",
    "\n",
    "FUNCTION_CALL模式：在创建Agent时，推荐大家使用ChatPromptTemplate\n",
    "\n",
    "ReAct模式：在创建Agent时，大家可以使用ChatPromptTemplate、PromptTemplate。但相较来讲，推荐大家使用PromptTemplate"
   ],
   "id": "162dc8e9ce825d3b"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
